package com.ningxun.pagent.bus.domain.aichat;
import com.baomidou.mybatisplus.annotation.*;
//import com.baomidou.mybatisplus.extension.handlers.JsonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.util.Map;

/**
 * 消息表（sys_message）POJO对象
 * 注：使用Lombok的@Data注解简化getter/setter等方法
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("bus_ai_chat") // 关联数据库表名
public class BaseAIChat {

    /**
     * 消息唯一标识（UUID，带横线，如：550e8400-e29b-41d4-a716-446655440000）
     * 主键策略：手动输入（需调用UUID.randomUUID().toString()生成）
     */
    @TableId(value = "message_id", type = IdType.AUTO)// 主键类型：手动输入
    private Long messageId;

    /**
     * 会话ID
     */
    private String conversationId;

    /**
     * 用户标识（如：user-123）
     */
    private String userId;

    /**
     * 消息内容（支持富文本/JSON）
     */
    private String usercontent;

    /**
     * 角色类型（枚举：user-用户/ system-系统）
     * 注：需配合枚举类RoleType使用（见下文）
     */
    private String syscontent;

    /**
     * 创建时间（精确到毫秒，如：2024-05-20T14:30:00.123）
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdTime;

    /**
     * 会话标题（自动生成，如："关于订单的咨询"）
     */
    private String conversationTitle;

    /**
     * 扩展元数据（JSON类型，如：{"sentiment_score": 0.85, "response_delay_ms": 230}）
     * 注：使用JsonTypeHandler处理JSON与Map的转换
     */
    private Map<String, Object> metadata;

    /**
     * 查询辅助字段：仅用于按日期(yyyy-MM-dd)筛选，不参与表映射
     */
    @TableField(exist = false)
    private String createdDate;

}